/**
*  
* @Function 批量核查详情服务 
* @ProjectName credit-data-platform 
* @PackageName com.py.credit.service    
* @FileName BatchReportDetailService.java    
* @Date 2018年10月19日下午4:29:06
* @Author Min DongXv
* @Copyright (c) 2018, 金电联行 All Rights Reserved.   
*   
*/
package com.py.credit.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.py.credit.common.rest.RestServiceResult;
import com.py.credit.entity.BatchReportDetailEntity;
import com.py.framework.core.common.Page;

/**
 * 
 * @Function 批量核查详情服务
 * @ClassName BatchReportDetailService
 * @Date 2018年10月19日 下午4:29:06
 * @Author Min DongXv
 * 
 */
public interface BatchReportDetailService {

	/**
	 *
	 * @Function 分页查询批量核查详情
	 * @FileName BatchReportDetailService.java
	 * @MethodName getBatchReportDetailByConditionForPage
	 * @param columns
	 * @param additionalColumns
	 * @param condition
	 * @param page
	 * @return
	 * @Date 2018年10月19日 下午4:30:22
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> getBatchReportDetailByConditionForPage(List<String> columns,
			String[] additionalColumns, String condition, Page page, String batchId);

	/**
	 *
	 * @Function 批量新增核查信息
	 * @FileName BatchReportDetailService.java
	 * @MethodName batchAddDetails
	 * @param list
	 * @Date 2018年10月19日 下午4:30:22
	 * @Author Min DongXv
	 *
	 */
	public void batchAddDetails(List<BatchReportDetailEntity> list);

	/**
	 *
	 * @Function 更新导入信息的基本信息
	 * @FileName BatchReportDetailService.java
	 * @MethodName updateDetailInfo
	 * @param batchId
	 * @Date 2018年10月19日 下午4:30:22
	 * @Author Min DongXv
	 *
	 */
	public void updateDetailInfo(String batchId);

	/**
	 *
	 * @Function 获取待生成的核查信息
	 * @FileName BatchReportDetailService.java
	 * @MethodName getWaitCreateDetail
	 * @param batchId
	 * @Date 2018年10月19日 下午4:30:22
	 * @Author Min DongXv
	 *
	 */
	public List<BatchReportDetailEntity> getWaitCreateDetail(String batchId);

	/**
	 *
	 * @Function 获取待生成的核查信息数量
	 * @FileName BatchReportDetailService.java
	 * @MethodName getWaitCreateDetailCount
	 * @param batchId
	 * @return
	 * @Date 2018年10月22日 下午6:03:18
	 * @Author Min DongXv
	 *
	 */
	public int getWaitCreateDetailCount(String batchId);

	/**
	 * 
	 * @Function 更新报告状态
	 * @FileName BatchReportDetailService.java
	 * @MethodName updateDetailStatus
	 * @param id
	 *            ID
	 * @param reportStatus
	 *            报告状态
	 * @param orgReportStatus
	 *            报告原始状态
	 * @Date 2018年10月19日 下午4:38:55
	 * @Author Min DongXv
	 *
	 */
	public void updateDetailStatus(Integer id, int reportStatus, int orgReportStatus);

	/**
	 *
	 * @Function 获取报告详情
	 * @FileName BatchReportDetailService.java
	 * @MethodName getBatchDetailById
	 * @param id
	 * @Date 2018年10月22日 上午10:14:38
	 * @Author Min DongXv
	 *
	 */
	public BatchReportDetailEntity getBatchDetailById(Integer id);

	/**
	 * 
	 * @Function 报告下载
	 * @FileName BatchReportDetailService.java
	 * @MethodName download
	 * @param absolutepath
	 *            文件存放地址
	 * @param id
	 *            报告编号
	 * @param response
	 * @return
	 * @Date 2018年10月22日 上午10:29:11
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> download(String absolutepath, Integer id, HttpServletResponse response);

	/**
	 * 
	 * @Function 报告预览
	 * @FileName BatchReportDetailService.java
	 * @MethodName preview
	 * @param absolutepath
	 *            文件存放地址
	 * @param id
	 *            报告编号
	 * @param response
	 * @return
	 * @Date 2018年10月22日 上午11:18:18
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> preview(String absolutepath, Integer id, HttpServletResponse response);

	/**
	 *
	 * @Function 批量更新待生成记录为生成中
	 * @FileName BatchReportDetailService.java
	 * @MethodName batchUpdateStatus
	 * @Date 2018年10月23日 上午10:41:56
	 * @Author Min DongXv
	 *
	 */
	void batchUpdateStatus();

	/**
	 *
	 * @Function 获取生成中报告数量
	 * @FileName BatchReportDetailService.java
	 * @MethodName getCreatingNum
	 * @return
	 * @Date 2018年10月23日 上午10:42:42
	 * @Author Min DongXv
	 *
	 */
	int getCreatingNum();

	/**
	 * 
	 * @Function 获取已生成报告的文件名
	 * @FileName BatchReportDetailService.java
	 * @MethodName getReportName
	 * @param batchId
	 *            批次ID
	 * @return
	 * @Date 2018年10月23日 下午3:51:18
	 * @Author Min DongXv
	 *
	 */
	List<String> getReportName(String batchId);

	/**
	 *
	 * @Function 选择性下载批量核查报告
	 * @FileName BatchReportDetailService.java
	 * @MethodName getReports
	 * @param absolutepath
	 *            文件存放地址
	 * @param zipPath
	 *            压缩包位置
	 * @param response
	 * @param zipName
	 *            压缩包名称
	 * @return
	 * @Date 2018年10月23日 下午6:29:46
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> getReports(String zipPath, HttpServletResponse response, String zipName);

	/**
	 *
	 * @Function 报告重新生成
	 * @FileName BatchReportDetailService.java
	 * @MethodName reCreateReport
	 * @param absolutepath
	 *            文件存放路径
	 * @param pdfJsPath
	 *            pdf生成脚本存放地址
	 * @param pdfPagePath
	 *            pdf页面路径
	 * @param googlePath
	 *            谷歌浏览器地址
	 * @param kId
	 *            库ID，默认100000
	 * @param id
	 *            报告详情地址
	 * @return
	 * @Date 2018年10月25日 上午9:56:26
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> reCreateReport(String absolutepath, String pdfJsPath, String pdfPagePath,
			String googlePath, String kId, Integer id);

	/**
	 * 
	 * @Function 文件是否存在
	 * @FileName BatchReportDetailService.java
	 * @MethodName fileExist
	 * @param absolutepath
	 * @param id
	 * @return
	 * @Date 2018年10月25日 上午10:52:56
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> fileExist(String absolutepath, Integer id);

	/**
	 * 
	 * @Function 批量下载的文件是否存在
	 * @FileName BatchReportDetailServiceImpl.java
	 * @MethodName filesExist
	 * @param absolutepath
	 *            文件是否存在
	 * @param batchId
	 *            批次信息
	 * @param list
	 *            ID集合
	 * @return
	 * @Date 2018年10月25日 上午11:01:03
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<Object> filesExist(String absolutepath, String batchId, String[] list);

	/**
	 * 
	 * @Function 校验下载文件
	 * @FileName BatchReportDetailServiceImpl.java
	 * @MethodName checkReports
	 * @param absolutepath
	 * @param batchId
	 * @param list
	 * @return
	 * @Date 2018年10月25日 下午5:57:51
	 * @Author Min DongXv
	 *
	 */
	RestServiceResult<String> checkReports(String absolutepath, String batchId, String[] list);
}
